package routers

import (
	"blog_server/global"
	"blog_server/internal/routers/api"
	v1 "blog_server/internal/routers/api/v1"
	"github.com/gin-gonic/gin"
	"net/http"
)

func NewRouter() *gin.Engine  {
	r := gin.New()
	r.Use(gin.Logger())
	r.Use(gin.Recovery())
	
	// 上传图片
	upload := api.NewUpload()
	r.POST("/upload/file", upload.UploadFile)
	
	// 静态资源访问
	r.StaticFS("/static", http.Dir(global.AppSetting.UploadSavePath))
	
	// JWT token生成
	r.GET("/auth", api.GetAuth)
	
	tag := v1.NewTag()
	article := v1.NewArticle()
	apiV1 := r.Group("/api/v1")
	{
		// 标签管理
		apiV1.POST("/tags", tag.Create) // 新增
		apiV1.DELETE("/tags/:id", tag.Delete) // 删除指定标签
		apiV1.PUT("/tags/:id", tag.Update) // 更新指定标签
		apiV1.PATCH("/tags/:id/state", tag.Update) // 更新指定标签的状态
		apiV1.GET("/tags", tag.List) // 获取标签列表
		
		// 文章管理
		apiV1.POST("/articles", article.Create) // 发布文章
		apiV1.DELETE("/articles/:id", article.Delete) // 删除指定文章
		apiV1.PUT("/articles/:id", article.Update) // 更新指定文章
		apiV1.PATCH("/articles/:id/state", article.Update) // 更新指定文章状态
		apiV1.GET("/articles/:id", article.Get) // 查询指定文章
		apiV1.GET("/articles", article.List) // 查询文章列表
	}
	
	return r
}
